Scatterplots

In [1]:
import numpy as np
import plotly.offline as pyo
import plotly.graph_objs as go

np.random.seed(42)

random_x = np.random.randint(1,101,100)
random_y = np.random.randint(1,101,100)

data = [go.Scatter(x=random_x, y=random_y, mode='markers')]

layout = go.Layout(title='First plot',
                    xaxis={'title':'My X Axis'},
                    yaxis=dict(title='My Y Axis'),
                    hovermode='closest')

fig = go.Figure(data=data, layout=layout)
pyo.iplot(fig)

Para salvar ao invés de de plotar no jupyter notebook, trocar a última linha de comando por:

pyo.plot(fig, filename='nome_do_plot.html')
In [1]:
import numpy as np
import plotly.offline as pyo
import plotly.graph_objs as go

np.random.seed(42)

random_x = np.random.randint(1,101,100)
random_y = np.random.randint(1,101,100)

data = [go.Scatter(x=random_x,
                    y=random_y,
                    mode='markers',
                    marker=dict(size=12,
                                color='rgb(51, 204, 153)',
                                symbol='pentagon',
                                line={'width':2}
                                ))]

layout = go.Layout(title='First plot',
                    xaxis={'title':'My X Axis'},
                    yaxis=dict(title='My Y Axis'),
                    hovermode='closest')

fig = go.Figure(data=data, layout=layout)
pyo.iplot(fig)

Line Charts

In [36]:
import numpy as np
import plotly.offline as pyo
import plotly.graph_objs as go
np.random.seed(56)

x_values = np.linspace(0,1,100)
y_values = np.random.randn(100)

trace0 = go.Scatter(x=x_values, y=y_values+5,
                    mode='markers', name='markers')

trace1 = go.Scatter(x=x_values, y=y_values,
                    mode='lines', name='lines')

trace2 = go.Scatter(x=x_values, y=y_values-5,
                    mode='lines+markers', name='lines and markers')

data = [trace0, trace1, trace2]

layout = go.Layout(title='Line Chart')

fig = go.Figure(data=data, layout=layout)
pyo.iplot(fig)
In [8]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/nst-est2017-alldata.csv')

df2 = df[df['DIVISION'] == '1']
df2.set_index('NAME', inplace=True)
list_of_pop_col = [col for col in df2.columns if col.startswith('POP')]
df2 = df2[list_of_pop_col]

data = [go.Scatter(x=df2.columns,
                    y=df2.loc[name],
                    mode='lines',
                    name=name) for name in df2.index]
                
pyo.iplot(data)

Exercício:

In [1]:
#######
# Objective: Using the file 2010YumaAZ.csv, develop a Line Chart
# that plots seven days worth of temperature data on one graph.
# You can use a for loop to assign each day to its own trace.
######

# Perform imports here:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go
In [32]:
# Create a pandas DataFrame from 2010YumaAZ.csv
df = pd.read_csv('data/2010YumaAZ.csv')
days = ['TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY','MONDAY']

# Primeiras linhas
df.head()
Out[32]:
LST_DATE DAY LST_TIME T_HR_AVG
0 20100601 TUESDAY 0:00 25.2
1 20100601 TUESDAY 1:00 24.1
2 20100601 TUESDAY 2:00 24.4
3 20100601 TUESDAY 3:00 24.9
4 20100601 TUESDAY 4:00 22.8
In [33]:
# Use a for loop (or list comprehension to create traces for the data list)
data = []

for day in days:
    df2 = df[df['DAY'] == day]
    trace = go.Scatter(x=df2['LST_TIME'],
                       y=df2['T_HR_AVG'],
                       mode='lines',
                       name=day)
    data.append(trace)
In [34]:
# Define the layout
layout = go.Layout(title='Line Chart Exercise',
                  xaxis={'title':'Last time'},
                  yaxis={'title':'Total Hour Average'},
                  hovermode='closest')

fig = go.Figure(data=data, layout=layout)

pyo.iplot(fig)

Bar Charts

In [2]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/2018WinterOlympics.csv')
df.head()
Out[2]:
Rank NOC Gold Silver Bronze Total
0 1 Norway 14 14 11 39
1 2 Germany 14 10 7 31
2 3 Canada 11 8 10 29
3 4 United States 9 8 6 23
4 5 Netherlands 8 6 6 20
In [3]:
data = [go.Bar(x=df['NOC'], y=df['Total'])]
layout = go.Layout(title='Medals')
fig = go.Figure(data=data,layout=layout)
pyo.iplot(fig)
In [4]:
trace0 = go.Bar(x=df['NOC'], y=df['Gold'], name='Gold', marker={'color':'#FFD700'})
trace1 = go.Bar(x=df['NOC'], y=df['Silver'], name='Silver', marker={'color':'#9EA0A1'})
trace2 = go.Bar(x=df['NOC'], y=df['Bronze'], name='Bronze', marker={'color':'#CD7F32'})
data = [trace0, trace1, trace2]

layout = go.Layout(title='Medals')
fig = go.Figure(data=data,layout=layout)
pyo.iplot(fig)
In [5]:
trace0 = go.Bar(x=df['NOC'], y=df['Gold'], name='Gold', marker={'color':'#FFD700'})
trace1 = go.Bar(x=df['NOC'], y=df['Silver'], name='Silver', marker={'color':'#9EA0A1'})
trace2 = go.Bar(x=df['NOC'], y=df['Bronze'], name='Bronze', marker={'color':'#CD7F32'})
data = [trace0, trace1, trace2]

layout = go.Layout(title='Medals', barmode='stack')
fig = go.Figure(data=data,layout=layout)
pyo.iplot(fig)

Exercício

In [12]:
#######
# Objective: Create a stacked bar chart from
# the file ../data/mocksurvey.csv. Note that questions appear in
# the index (and should be used for the x-axis), while responses
# appear as column labels.  Extra Credit: make a horizontal bar chart!
######

# Perform imports here:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

# create a DataFrame from the .csv file:
df = pd.read_csv('data/mocksurvey.csv', index_col=0)
df.head()
Out[12]:
Strongly Agree Somewhat Agree Neutral Somewhat Disagree Strongly Disagree
Question 1 0.45 0.25 0.10 0.12 0.08
Question 2 0.12 0.07 0.48 0.18 0.15
Question 3 0.05 0.22 0.19 0.23 0.31
In [17]:
# create traces using a list comprehension:
data = [go.Bar(x=df.index, y=df[response], name=response) for response in df.columns]
layout = go.Layout(title='Bar Chart Exercise', barmode='stack')

# create a layout, remember to set the barmode here
fig = go.Figure(data=data, layout=layout)

# create a fig from data & layout, and plot the fig.
pyo.iplot(fig)
In [22]:
# create traces using a list comprehension:
data = [go.Bar(y=df.index, x=df[response], name=response, orientation= 'h') for response in df.columns]
layout = go.Layout(title='Bar Chart Exercise', barmode='stack')

# create a layout, remember to set the barmode here
fig = go.Figure(data=data, layout=layout)

# create a fig from data & layout, and plot the fig.
pyo.iplot(fig)

Bubble plots

In [1]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/mpg.csv')
df.head()
Out[1]:
mpg cylinders displacement horsepower weight acceleration model_year origin name
0 18.0 8 307.0 130 3504 12.0 70 1 chevrolet chevelle malibu
1 15.0 8 350.0 165 3693 11.5 70 1 buick skylark 320
2 18.0 8 318.0 150 3436 11.0 70 1 plymouth satellite
3 16.0 8 304.0 150 3433 12.0 70 1 amc rebel sst
4 17.0 8 302.0 140 3449 10.5 70 1 ford torino
In [9]:
data = [go.Scatter(x=df['horsepower'],
                  y=df['mpg'],
                  text=df['name'],
                  mode='markers',
                  marker=dict(size=3*df['cylinders'], color=df['cylinders'], showscale=True))]

layout = go.Layout(title='Buble Chart', hovermode='closest')

fig = go.Figure(data=data, layout=layout)

pyo.iplot(fig)

Boxplot

In [11]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

y = [1,14,15,15,17,18,18,19,19,20,20,23,24,26,27,27,28,29,33,54]

data = [go.Box(y=y)]

pyo.iplot(data)
In [12]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

y = [1,14,15,15,17,18,18,19,19,20,20,23,24,26,27,27,28,29,33,54]

data = [go.Box(y=y, boxpoints='all')]

pyo.iplot(data)
In [13]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

y = [1,14,15,15,17,18,18,19,19,20,20,23,24,26,27,27,28,29,33,54]

data = [go.Box(y=y, boxpoints='all', jitter=0.3, pointpos=0)] # Jitter é o quanto os dados estão espalhados

pyo.iplot(data)
In [20]:
snodgrass = [.209,.205,.196,.210,.202,.207,.224,.223,.220,.201]
twain = [.225,.262,.217,.240,.230,.229,.235,.217]

data = [go.Box(y=snodgrass, name='QCS'),
        go.Box(y=twain,name='MT')]

layout = go.Layout(title = 'Comparison of three-letter-word frequencies<br>\
between Quintus Curtius Snodgrass and Mark Twain')

fig = go.Figure(data=data, layout=layout)
pyo.iplot(fig)

Histograms

In [26]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/mpg.csv')

data = [go.Histogram(x=df['mpg'])]

layout = go.Layout(title='Histogram')

fig = go.Figure(data=data, layout=layout)

pyo.iplot(fig)
In [27]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/mpg.csv')

data = [go.Histogram(x=df['mpg'], xbins=dict(start=0,end=50,size=10))]

layout = go.Layout(title='Histogram')

fig = go.Figure(data=data, layout=layout)

pyo.iplot(fig)
In [29]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/mpg.csv')

data = [go.Histogram(x=df['mpg'], xbins=dict(start=0,end=50,size=1))]

layout = go.Layout(title='Histogram')

fig = go.Figure(data=data, layout=layout)

pyo.iplot(fig)

Distplot

In [34]:
import numpy as np
import plotly.offline as pyo
import plotly.figure_factory as ff

x = np.random.randn(1000)

hist_data = [x]

group_labels = ['distplot']

fig = ff.create_distplot(hist_data, group_labels)
pyo.iplot(fig)
In [35]:
import numpy as np
import plotly.offline as pyo
import plotly.figure_factory as ff

x1 = np.random.randn(1000)-2
x2 = np.random.randn(1000)
x3 = np.random.randn(1000)+2
x4 = np.random.randn(1000)+4

hist_data = [x1,x2,x3,x4]

group_labels = ['x1','x2','x3','x4']

fig = ff.create_distplot(hist_data, group_labels)
pyo.iplot(fig)
In [38]:
import numpy as np
import plotly.offline as pyo
import plotly.figure_factory as ff

x1 = np.random.randn(1000)-2
x2 = np.random.randn(1000)
x3 = np.random.randn(1000)+2
x4 = np.random.randn(1000)+4

hist_data = [x1,x2,x3,x4]

group_labels = ['x1','x2','x3','x4']

fig = ff.create_distplot(hist_data, group_labels, bin_size=[0.05,0.05,0.05,0.05])
pyo.iplot(fig)

Heatmap

In [39]:
df = pd.read_csv('data/2010SantaBarbaraCA.csv')
df.head()
Out[39]:
LST_DATE DAY LST_TIME T_HR_AVG
0 20100601 TUESDAY 0:00 12.7
1 20100601 TUESDAY 1:00 12.7
2 20100601 TUESDAY 2:00 12.3
3 20100601 TUESDAY 3:00 12.5
4 20100601 TUESDAY 4:00 12.7
In [40]:
df.columns
Out[40]:
Index(['LST_DATE', 'DAY', 'LST_TIME', 'T_HR_AVG'], dtype='object')
In [46]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/2010SantaBarbaraCA.csv')

data = [go.Heatmap(x=df['DAY'], y=df['LST_TIME'], z=df['T_HR_AVG'].values.tolist())]
layout = go.Layout(title='SB CA Temperature')
fig = go.Figure(data=data, layout=layout)

pyo.iplot(fig)
In [49]:
# Mudando colorscale
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv('data/2010SantaBarbaraCA.csv')

data = [go.Heatmap(x=df['DAY'], y=df['LST_TIME'], z=df['T_HR_AVG'].values.tolist(), colorscale='Jet')]
layout = go.Layout(title='SB CA Temperature')
fig = go.Figure(data=data, layout=layout)
pyo.iplot(fig)
In [63]:
import pandas as pd
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly.subplots import make_subplots



df1 = pd.read_csv('data/2010SitkaAK.csv')
df2 = pd.read_csv('data/2010SantaBarbaraCA.csv')
df3 = pd.read_csv('data/2010YumaAZ.csv')

trace1 = go.Heatmap(x=df1['DAY'], y=df1['LST_TIME'],
                   z=df1['T_HR_AVG'], colorscale='Jet', zmin=5, zmax=40)

trace2 = go.Heatmap(x=df2['DAY'], y=df2['LST_TIME'],
                   z=df2['T_HR_AVG'], colorscale='Jet', zmin=5, zmax=40)

trace3 = go.Heatmap(x=df3['DAY'], y=df3['LST_TIME'],
                   z=df3['T_HR_AVG'], colorscale='Jet', zmin=5, zmax=40)

fig = make_subplots(rows=1, cols=3, subplot_titles=['Sitka AK', 'SB CA', 'Yuma AZ'], shared_yaxes=False)

fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)

fig['layout'].update(title=dict(text='Temperature for 3 cities', 
                                y=0.9,
                                x=0.5))

pyo.iplot(fig)